fix schema violations in garmin training center writer.
authortsteven4 <tsteven4@gmail.com>
Sun, 11 May 2014 15:06:33 +0000 (15:06 +0000)
committertsteven4 <tsteven4@gmail.com>
Sun, 11 May 2014 15:06:33 +0000 (15:06 +0000)
gpsbabel/gtrnctr.cc
gpsbabel/reference/track/tcxtest~gpx-course.tcx
gpsbabel/reference/track/tcxtest~gpx-history.tcx

index 4cf5aeaa261b0a6bf22d060d51e9890e8d5cbf51..90bd8f22b5c6e385b66cff750e65d0856f6cf4d4 100644 (file)
@@ -342,6 +342,10 @@ gtc_waypt_pr(const Waypoint* wpt)
 static void
 gtc_fake_hdr(void)
 {
+  /* handle the CourseLap_t or the ActivityLap_t types. */
+  /* note that the elements must appear in the order required by the schema. */
+  /* also note some of the elements are required. */
+
   long secs = 0;
   if (gtc_least_time.isValid() && gtc_most_time.isValid()) {
     secs = gtc_most_time.toTime_t() - gtc_least_time.toTime_t();
@@ -349,9 +353,22 @@ gtc_fake_hdr(void)
 
   /* write these in either case, course or activity format */
   gtc_write_xml(0, "<TotalTimeSeconds>%d</TotalTimeSeconds>\n", secs);
-  if (tdata->distance_meters) {
-    gtc_write_xml(0, "<DistanceMeters>%.2f</DistanceMeters>\n",
-                  tdata->distance_meters);
+  gtc_write_xml(0, "<DistanceMeters>%.2f</DistanceMeters>\n", tdata->distance_meters);
+  if (gtc_course_flag) { /* course format */
+    gtc_write_xml(1, "<BeginPosition>\n");
+    gtc_write_xml(0, "<LatitudeDegrees>%lf</LatitudeDegrees>\n", gtc_start_lat);
+    gtc_write_xml(0, "<LongitudeDegrees>%lf</LongitudeDegrees>\n", gtc_start_long);
+    gtc_write_xml(-1,"</BeginPosition>\n");
+    gtc_write_xml(1, "<EndPosition>\n");
+    gtc_write_xml(0, "<LatitudeDegrees>%lf</LatitudeDegrees>\n", gtc_end_lat);
+    gtc_write_xml(0, "<LongitudeDegrees>%lf</LongitudeDegrees>\n", gtc_end_long);
+    gtc_write_xml(-1,"</EndPosition>\n");
+
+  } else {  /* activity (history) format */
+    if (tdata->max_spd) {
+      gtc_write_xml(0, "<MaximumSpeed>%.3f</MaximumSpeed>\n", tdata->max_spd);
+    }
+    gtc_write_xml(0, "<Calories>0</Calories>\n"); /* element is required */
   }
   if (tdata->avg_hrt) {
     gtc_write_xml(1, "<AverageHeartRateBpm xsi:type=\"HeartRateInBeatsPerMinute_t\">\n");
@@ -363,26 +380,12 @@ gtc_fake_hdr(void)
     gtc_write_xml(0, "<Value>%d</Value>\n", (int)(tdata->max_hrt + 0.5));
     gtc_write_xml(-1,"</MaximumHeartRateBpm>\n");
   }
+  gtc_write_xml(0, "<Intensity>Active</Intensity>\n");
   if (tdata->avg_cad) {
     gtc_write_xml(0, "<Cadence>%d</Cadence>\n", tdata->avg_cad);
   }
-  gtc_write_xml(0, "<Intensity>Active</Intensity>\n");
 
-  if (gtc_course_flag) { /* course format */
-    gtc_write_xml(1, "<BeginPosition>\n");
-    gtc_write_xml(0, "<LatitudeDegrees>%lf</LatitudeDegrees>\n", gtc_start_lat);
-    gtc_write_xml(0, "<LongitudeDegrees>%lf</LongitudeDegrees>\n", gtc_start_long);
-    gtc_write_xml(-1,"</BeginPosition>\n");
-    gtc_write_xml(1, "<EndPosition>\n");
-    gtc_write_xml(0, "<LatitudeDegrees>%lf</LatitudeDegrees>\n", gtc_end_lat);
-    gtc_write_xml(0, "<LongitudeDegrees>%lf</LongitudeDegrees>\n", gtc_end_long);
-    gtc_write_xml(-1,"</EndPosition>\n");
-
-  } else {  /* activity (history) format */
-    if (tdata->max_spd) {
-      gtc_write_xml(0, "<MaximumSpeed>%.3f</MaximumSpeed>\n", tdata->max_spd);
-    }
-    //gtc_write_xml(0, "<Calories>0</Calories>\n");
+  if (!gtc_course_flag) { /* activity (history) format */
     gtc_write_xml(0, "<TriggerMethod>Manual</TriggerMethod>\n");
   }
 
index 1fe692250c9d312575ee4d01d43132afa7187b89..991be3ca8a495cf1c90c9c57284aac9ae85479ec 100644 (file)
@@ -6,7 +6,6 @@
       <Lap>
         <TotalTimeSeconds>6554</TotalTimeSeconds>
         <DistanceMeters>56826.54</DistanceMeters>
-        <Intensity>Active</Intensity>
         <BeginPosition>
           <LatitudeDegrees>34.173898</LatitudeDegrees>
           <LongitudeDegrees>-118.758792</LongitudeDegrees>
@@ -15,6 +14,7 @@
           <LatitudeDegrees>34.155590</LatitudeDegrees>
           <LongitudeDegrees>-118.757063</LongitudeDegrees>
         </EndPosition>
+        <Intensity>Active</Intensity>
       </Lap>
       <Track>
         <Trackpoint>
index d1e44c9d1beee4e208fcf267b9385a733697a8c5..d0e5c146845d7bba1f155acf54ec8f7f59b2da69 100644 (file)
@@ -6,8 +6,9 @@
       <Lap StartTime="2008-08-21T13:08:52Z">
         <TotalTimeSeconds>6554</TotalTimeSeconds>
         <DistanceMeters>56826.54</DistanceMeters>
-        <Intensity>Active</Intensity>
         <MaximumSpeed>19.194</MaximumSpeed>
+        <Calories>0</Calories>
+        <Intensity>Active</Intensity>
         <TriggerMethod>Manual</TriggerMethod>
         <Track>
           <Trackpoint>